package fr.bludwarf.skywarrior.global;

import java.util.ArrayDeque;
import java.util.ArrayList;

import fr.bludwarf.commons.StringUtils;
import fr.bludwarf.skywarrior.ile.Progression;

public class FileDAttente<P extends Progression<?>> extends ArrayDeque<P>
{

	/** */
	private static final long serialVersionUID = 2998494699044016798L;

	/**
	 * Continue ou commence la prochaine construction pendant un certain temps. Ne termine pas la construction !
	 * @param temps temps passer à la construction
	 * @throws Exception 
	 */
	public void avancer(final double temps) throws Exception {
		final P enCours = peek();
		
		if (enCours != null && enCours.aEteCommencee())
		{
			enCours.avancer(temps);
		}
	}

	public String toString(EtatMonde etatMonde) throws Exception
	{		
		ArrayList<String> elements = new ArrayList<String>();

		for (final P p : this)
		{
			elements.add(p.toString(etatMonde));
		}

		return "[" + StringUtils.join(elements) + "]";
	}

}
